﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using CRMBussines;

public partial class Agenda : System.Web.UI.Page
{
    private static AppSettingsReader settings = new AppSettingsReader();
    string cadena = (string)settings.GetValue("Conexion2", typeof(string));
    private static int idC = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        cargaCombos();
        CuandoInicias(false);
    }

    #region CargaCatalogos

    private void cargaCombos()
    {
        using (CrmBussines c = new CrmBussines(cadena, CRMGenerales.Firmado))
        {

            ddUsuarioBusqueda.DataSource = c.ObtenUsuarios();
            ddUsuarioBusqueda.DataTextField = "Nombre";
            ddUsuarioBusqueda.DataValueField = "UsuariosId";
            ddUsuarioBusqueda.DataBind();
            ddUsuarioBusqueda.Text = CRMGenerales.Firmado.UsuariosId.ToString();

            ddUsuarioAsignado.DataSource = c.ObtenUsuarios();
            ddUsuarioAsignado.DataTextField = "Nombre";
            ddUsuarioAsignado.DataValueField = "UsuariosId";
            ddUsuarioAsignado.DataBind();
            ddUsuarioAsignado.Text = CRMGenerales.Firmado.UsuariosId.ToString();

            ddUsuarioQuien.DataSource = c.ObtenUsuarios();
            ddUsuarioQuien.DataTextField = "Nombre";
            ddUsuarioQuien.DataValueField = "UsuariosId";
            ddUsuarioQuien.DataBind();
            ddUsuarioAsignado.Text = CRMGenerales.Firmado.UsuariosId.ToString();

            ddProspecto.DataSource = c.ObtenProspectos();
            ddProspecto.DataTextField = "Codigo";
            ddProspecto.DataValueField = "ProspectosId";
            ddProspecto.DataBind();

            //DropDownList1.DataSource = c.ObtenProspectos();
            //DropDownList1.DataTextField = "Codigo";
            //DropDownList1.DataValueField = "ProspectosId";
            //DropDownList1.DataBind();

        }
    }

    private void cargaAgenda()
    {
        using (CrmBussines c = new CrmBussines(cadena, CRMGenerales.Firmado))
        {
            grdDatos.DataSource = c.ObtenCitasXUsuario(int.Parse(ddUsuarioBusqueda.SelectedItem.Value));
            grdDatos.DataBind();
        }
    }

    #endregion

    protected void grdDatos_SelectedIndexChanged1(object sender, EventArgs e)
    {
        idC = int.Parse(grdDatos.SelectedValue.ToString());
        CRMBussines.Agenda cita = (CRMBussines.Agenda)cargaRegistro(int.Parse(grdDatos.SelectedValue.ToString()));

        txtAsunto.Text = cita.Asunto;
        fecha.Text = cita.Fecha.ToShortDateString();
        txtHora.Text = cita.HoraCita;
        txtMinutos.Text = cita.MinutosCita;
        txtComentarios.Text = cita.Comentarios;
        txtMapa.Text= cita.Mapa;
        ddUsuarioAsignado.Text = cita.UsuariosIdAsignado.ToString();
        ddUsuarioQuien.Text = cita.UsuariosIdHecho.ToString();
        ddProspecto.Text = cita.ProspectosId.ToString();

        cargaAgenda();

        lnkEliminarCita.Enabled = true;
    }
    protected void grdDatos_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        grdDatos.PageIndex = e.NewPageIndex;
        cargaAgenda();
    }
    protected void btnBuscarAgenda_Click(object sender, EventArgs e)
    {
        cargaAgenda();
    }
    protected void lnkNuevoCita_Click(object sender, EventArgs e)
    {
        LimpiaAgenda();
        SoloLecturaAgenda(false);
        lnkGuardarAgenda.Enabled = true;
        idC = 0;
        ddUsuarioAsignado.Focus();
    }
    protected void lnkEliminarCita_Click(object sender, EventArgs e)
    {
        if (idC != 0)
        {
            using (CrmBussines c = new CrmBussines(cadena, CRMGenerales.Firmado))
            {
                c.CancelaCita(idC,"Cita cancelada x el usuario");
            }
            cargaAgenda();
            idC = 0;
            LimpiaAgenda();
            lnkEliminarCita.Enabled = false;
        }
    }
    protected void lnkEditarCita_Click(object sender, EventArgs e)
    {
        SoloLecturaAgenda(false);
        lnkGuardarAgenda.Enabled = true;
        ddUsuarioAsignado.Focus();
    }
    protected void lnkGuardarAgenda_Click(object sender, EventArgs e)
    {
        using (CrmBussines c = new CrmBussines(cadena, CRMGenerales.Firmado))
        {

            if (idC == 0)
                c.AgregarCita(ObtenAgenda());
            else
            {

                CRMBussines.Agenda age = ObtenAgenda();
                age.AgendasId = idC;
                c.ReAgenda(idC,age);
            }
        }
        cargaAgenda();
        SoloLecturaAgenda(true);
        idC = 0;
        lnkGuardarAgenda.Enabled = false;
        
    }

    #region Metodos

    #region LimpiaCajas

    private void LimpiaAgenda()
    {
        txtAsunto.Text = string.Empty;
        fecha.Text = string.Empty;
        txtHora.Text = string.Empty;
        txtMinutos.Text = string.Empty;
        txtComentarios.Text = string.Empty;
        txtMapa.Text = string.Empty;
    }

    #endregion

    #region ObtenDatos

    private CRMBussines.Agenda ObtenAgenda()
    {
        CRMBussines.Agenda age = new CRMBussines.Agenda();
        

        age.Asunto = txtAsunto.Text;
        age.Fecha = DateTime.Parse(fecha.Text);
        age.HoraCita = txtHora.Text;
        age.MinutosCita = txtMinutos.Text;
        age.Comentarios = txtComentarios.Text;
        age.Mapa = txtMapa.Text;
        age.Hora = DateTime.Now;
        age.UsuariosIdAsignado = int.Parse(ddUsuarioAsignado.SelectedItem.Value);
        age.UsuariosIdHecho = int.Parse(ddUsuarioQuien.SelectedItem.Value);
        age.ProspectosId  = int.Parse(ddProspecto.SelectedItem.Value);

        return age;
    }

    #endregion

    #region SoloLectura

    private void SoloLecturaAgenda(bool valor)
    {
        txtAsunto.ReadOnly = valor;
        fecha.ReadOnly = valor;
        txtHora.ReadOnly = valor;
        txtMinutos.ReadOnly = valor;
        txtComentarios.ReadOnly = valor;
        txtMapa.ReadOnly = valor;
    }

    #endregion

    private void CuandoInicias(bool valor)
    {
        lnkGuardarAgenda.Enabled = valor;        

        lnkEliminarCita.Enabled = valor;
        
    }

    private object cargaRegistro(int id)
    {
        object reg = new object();
        using (CrmBussines c = new CrmBussines(cadena, CRMGenerales.Firmado))
        {
            reg = c.ObtenCita(id);
        }

        return reg;
    }

    #endregion

}